/* 
token处理的工具函数
1. 生成token
2. 校验token
*/

const jwt = require('jsonwebtoken')

const SECRET_KEY = 'wh220516_key'

// 生成并返回token

function createToken(userId, expireTime = '7d') {
  return jwt.sign({ data: userId }, SECRET_KEY, { expiresIn: expireTime })
}

exports.createToken = createToken

// 校验token
function verifyToken(token) {
  return new Promise((resolve, reject) => {
    // 对token进行校验
    jwt.verify(token, SECRET_KEY, (err, decode) => {
      if (err) {
        reject(new Error('token过期或者非法'))
      } else {
        // 校验成功，设置成功的promise
        resolve(decode.data)
      }
    })
  })
}
exports.verifyToken = verifyToken


// const token = createToken(123, 3)
// console.log(token)

// setTimeout(() => {
//   verifyToken(token).then(
//     (value) => { console.log(value) },
//     (error) => { console.log(error.message) }
//   )
// }, 5000)
